
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <signal.h>

void handler_signal(int signal)
{
    printf("sig=%d \n", signal);
    int count = 5;
    while (count != 0) {
        printf("signal handler %d\n", count);
        sleep(1);
        count --;
    }
}

int main()
{
    struct sigaction act;
    act.sa_handler = handler_signal;
    sigemptyset(&act.sa_mask);
    act.sa_flags = 0;
    sigaction(SIGINT, &act, 0);

    while (1) {
        printf("main ------+++++\n");
        sleep(1);
    }

    return 0;
}

/* 测试1
按下 ctrl + c
阻塞主线程

*/

/* 测试2
按下 ctrl + c
按下 ctrl + c
按下 ctrl + c

在信号回调函数中, 阻塞后续信号触发
*/